//配置axios的全局基本路径
axios.defaults.baseURL='http://localhost:8080'
//全局属性配置，在任意组件内可以使用this.$http获取axios对象
Vue.prototype.$http = axios


//======================
//1 使用axios前置拦截器，让所有的请求都携带uToken
axios.interceptors.request.use(config=>{
    //携带token
    let token =  localStorage.getItem("token");
    if(token){
        config.headers['U-TOKEN']=token;
    }
    return config;
},error => {
    Promise.reject(error);
})

//3 使用axios后置拦截器，处理后端响应的noLogin错误码
axios.interceptors.response.use(result=>{
    let data = result.data;
    if(!data.success && data.message==="noLogin"){//如果没有token,报noLogin跳到登录页面
        //跳到登录
        location.href="login.html";
    }
    return result;
},error => {
    Promise.reject(error);
})


//4 静态资源拦截器
let url = location.href;
/**
 * login.html 或者 register.html 或者 index.html ,callback.html,binder1.html 放行
 */
if (url.indexOf("login.html") === -1
        && url.indexOf("register.html") === -1
        && url.indexOf("index.html") === -1
        && url.indexOf("callback.html") === -1
        && url.indexOf("binder.html") === -1

){
    //不是登录也不是注册，校验是否有权限
    let loginTmp = localStorage.getItem('logininfo');//获取登录的logininfo信息
    if(loginTmp == null){//如果loginTmp为空说明没有登录,跳到登录页面
        //没有登录
        location.href="login.html";
    }
    //登录了,就放行
}

/**
 * 解析url获取参数对象
 * @param url
 * @returns {{}}
 */
function parseUrlParams2Obj(url){// http://bugtracker.itsource.cn/callback.html?code=061IduGa1839qC02jlIa1NmHxX1IduGX&state=1
    //获取请求参数
    let paramStr = url.substring(url.indexOf("?")+1);//截取?后面的地址   code=021FdXFa14mYlA016OGa1L3R4X0FdXFO&state=1
    let paramStrs = paramStr.split("&");//将截取的地址,根据&来分割,得到两个值  [code=021FdXFa14mYlA016OGa1L3R4X0FdXFO,state=1]
    let paramObj = {};//准备一个数组
    for(let i=0;i<paramStrs.length;i++){//遍历对象,往对象里面赋值
        let paramName = paramStrs[i].split("=")[0];//截取=之前的值  code
        let paramValue = paramStrs[i].split("=")[1];//截取=之后的值  021FdXFa14mYlA016OGa1L3R4X0FdXFO
        paramObj[paramName] = paramValue;// [code]=021FdXFa14mYlA016OGa1L3R4X0FdXFO 动态给对象设置属性和值
    }
    return paramObj;
}


